// 控制页面的访问权限
import router from '@/router'
import store from '@/store'
import nProgress from 'nprogress'
import 'nprogress/nprogress.css'

// 路由前置守卫
const whiteList = ['/login', '/404'] // 白名单  没有登录也可以跳转
router.beforeEach(async(to, from, next) => {
  nProgress.start()
  // console.log(store.state.user.token)
  // 判断 是否登录
  if (store.state.user.token) {
    //    1.如果登陆了
    // 发送请求获取用户信息
    // 判断本地是否还有用户信息
    if (!store.state.user.userInfo.userId) {
      // 发送请求
      // 拿到用户信息
      const { roles } = await store.dispatch('user/getUserInfo')
      // 根据用户信息里的menus进行路由的动态添加
      // roles.menus 可以访问的路由模块
      // varRouter 所有的路由模块集合
      store.commit('permission/filterRouter', roles)
      next(to.path)
    }
    if (to.path === '/login') {
      //        *判断访问的页面是否为 登录页面
      //            1.是登录页 next('/')
      next('/')
    } else {
      //            2.不是登录页 next()
      next()
    }
  } else {
    //    2.如果没有登录
    if (whiteList.indexOf(to.path) !== -1) {
      //        *判断访问的页面是否为 登录页面
      //            1.是登录页面 next()
      next()
    } else {
      //            2.不是登录页 next('/login')
      next('/login')
    }
  }
  nProgress.done()
})
